/**
 * @file transport_net_config.h
 * @brief 网络传输驱动配置加载头文件
 * @details 提供从配置文件加载网络传输配置的接口
 * 
 * @author 电网协议开发团队
 * @date 2024
 * @version 1.0
 */

#ifndef TRANSPORT_NET_CONFIG_H
#define TRANSPORT_NET_CONFIG_H

#include "transport_net.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 从配置文件加载网络传输配置
 * @details 从配置文件中读取网络连接参数并填充到配置结构体中
 * 
 * @param config_file 配置文件路径，如果为NULL则使用默认路径
 * @param config 输出的网络传输配置结构体指针
 * @return 网络传输错误码
 *         - NET_TRANSPORT_SUCCESS: 加载成功
 *         - NET_TRANSPORT_ERROR_INVALID_PARAM: 参数无效
 *         - NET_TRANSPORT_ERROR_INIT_FAILED: 配置文件不存在或读取失败
 */
net_transport_error_t transport_net_config_load(const char* config_file, net_transport_config_t* config);

/**
 * @brief 保存网络传输配置到文件
 * @details 将当前配置结构体保存到配置文件中
 * 
 * @param config_file 配置文件路径，如果为NULL则使用默认路径
 * @param config 网络传输配置结构体指针
 * @return 网络传输错误码
 *         - NET_TRANSPORT_SUCCESS: 保存成功
 *         - NET_TRANSPORT_ERROR_INVALID_PARAM: 参数无效
 *         - NET_TRANSPORT_ERROR_SYSTEM: 文件写入失败
 */
net_transport_error_t transport_net_config_save(const char* config_file, const net_transport_config_t* config);

/**
 * @brief 获取默认配置文件路径
 * @details 返回默认配置文件的路径
 * 
 * @return 默认配置文件路径字符串
 */
const char* transport_net_config_get_default_path(void);

#ifdef __cplusplus
}
#endif

#endif /* TRANSPORT_NET_CONFIG_H */
